﻿function keypress(e) {
    //Hàm dùng để ngăn người dùng nhập các ký tự khác ký tự số vào TextBox
    var keypressed = null;
    if (window.event) {
        keypressed = window.event.keyCode; //IE
    }
    else {
        keypressed = e.which; //NON-IE, Standard
    }

    if (keypressed < 48 || keypressed > 57) { //CharCode của 0 là 48 (Theo bảng mã ASCII)
        //CharCode của 9 là 57 (Theo bảng mã ASCII)

        if (keypressed == 8 || keypressed == 127) { //Phím Delete và Phím Back
            return true;
        }
        return false;
    }
}

String.prototype.trim = function () {
    return this.replace(/^\s*/, "").replace(/\s*$/, "");
}

function CheckEmail(email) {
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    if (!filter.test(email)) {
        return false;
    }
    else return true;
}


/*
Su dung ket hop 2 thuoc tinh onkeypress + onkeyup
Chuyen so vua nhap thanh chuoi co phan cach bang dau phay (,)
Them thuoc tinh nay vao input: onkeyup="keyuped(this)" va onkeypress="return keypress(event)"
*/
function keyuped(obj) {
    var chuoiso = obj.value.toString();

    //Bo het ky tu phan cach
    chuoiso = chuoiso.replace(/,/g, '');
    var daochuoi = "";
    var i = chuoiso.length - 1;

    //Dao chuoi so truyen vao
    while (i >= 0) {
        daochuoi += chuoiso[i];
        i--;
    }
    i = 0;

    //Duyet chuoi vua duoc dao de them dau phan cach
    chuoiso = "";
    while (i + 3 < daochuoi.length) {
        chuoiso += daochuoi.substring(i, i + 3) + ",";
        i += 3;
    }
    chuoiso += daochuoi.substring(i, daochuoi.length + 1);
    i = chuoiso.length - 1;
    daochuoi = "";

    //Duyet nguoc chuoi de tra ve
    while (i >= 0) {
        daochuoi += chuoiso[i];
        i--;
    }
    obj.value = daochuoi;
}

function CheckFloat(e, text) {
    //Hàm dùng để ngăn người dùng nhập các ký tự khác ký tự số vào TextBox
    var keypressed = null;
    if (window.event) {
        keypressed = window.event.keyCode; //IE
    }
    else {
        keypressed = e.which; //NON-IE, Standard
    }

    if (keypressed < 48 || keypressed > 57) { //CharCode của 0 là 48 (Theo bảng mã ASCII)
        //CharCode của 9 là 57 (Theo bảng mã ASCII)

        if (keypressed == 8 || keypressed == 127) { //Phím Delete và Phím Back
            return true;
        }

        if (keypressed == 46) {
            var arr = text.split('.');
            if (arr.length > 1)
                return false;
            else return true;
        }

        return false;
    }
}

String.prototype.trim = function () {
    return this.replace(/^\s*/, "").replace(/\s*$/, "");
}

function CheckEmail(email) {
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    if (!filter.test(email)) {
        return false;
    }
    else return true;
}

/*
Sử dụng cho phím enter khi nhập điều kiện tìm kiếm
Them thuoc tinh nay vao input: onkeypress="return keypressforQuickSearch(event);"
*/
function keypressforQuickSearch(e, ControllerName, ActionName, SearchObject, SearchInput, id) {
    var keypressed = null;
    if (window.event) {
        keypressed = window.event.keyCode; //IE
    }
    else {
        keypressed = e.which; //NON-IE, Standard
    }

    if (keypressed == 13) {
        //CharCode của phím enter là 13 (Theo bảng mã ASCII)
        var url = basePath + ControllerName + "/" + ActionName;
        if (!isNaN(id) && !IsEmpty(id))
            url += "/" + id;
        url += "?SearchObject=" + SearchObject + "&SearchInput=" + SearchInput;

        document.forms["form"].action = url;
        window.location.href = url;
    }
}

/*Begin BACNP*/

//Hàm bắt sự kiện onchange của textbox
//Xóa tất cả ký tự không phải là số
//Gán sự kiện: onchange="onchangeonlynumbers(this);"
function onchangeonlynumbers(textbox) {
    textbox.value = this.FilterOnlyNumber(textbox.value);
    textbox.value = this.DeleteFirstZero(textbox.value);
    textbox.value = this.AddCharSplitGroupNumber(textbox.value);
}

//Hàm bắt sự kiện keyup của textbox
//Xóa tất cả ký tự không phải là số
//Gán sự kiện: onkeyup="keyuponlynumber(this);"
function keyuponlynumber(textbox) {
    textbox.value = this.FilterOnlyNumber(textbox.value);
    textbox.value = this.DeleteFirstZero(textbox.value);
    textbox.value = this.AddCharSplitGroupNumber(textbox.value);
}

//Hàm bắt sự kiện onchange của textbox
//Xóa tất cả ký tự không phải là số thực
//Gán sự kiện: onchange="onchangeonlyFloatNumber(this);"
function onchangeonlyFloatNumber(textbox) {
    textbox.value = this.FilterFloatOnlyNumber(textbox.value);
    textbox.value = this.DeleteFirstZeroFloat(textbox.value);
    textbox.value = this.AddCharSplitGroupFloatNumber(textbox.value);
}

//Hàm bắt sự kiện keyup của textbox
//Xóa tất cả ký tự không phải là số thực
//Gán sự kiện: onkeyup="onkeyuponlyFloatNumber(this);"
function onkeyuponlyFloatNumber(textbox) {
    textbox.value = this.FilterFloatOnlyNumber(textbox.value);
    textbox.value = this.DeleteFirstZeroFloat(textbox.value);
    textbox.value = this.AddCharSplitGroupFloatNumber(textbox.value);
}

//Hàm lọc số
//Truyền vào chuỗi và trả về một chuỗi số hoặc trống
function FilterOnlyNumber(text) {
    var arrNumbers = this.SplitNumberToArray(text);
    var SoMoi = "";

    if (arrNumbers != null && arrNumbers.length > 0) {
        for (var i = 0; i < arrNumbers.length; i++) {
            SoMoi += arrNumbers[i];
        }
    }
    return SoMoi;
}


//Hàm lọc số
//Truyền vào chuỗi và trả về một chuỗi số thực hoặc trống
function FilterFloatOnlyNumber(text) {
    var arrNumbers = this.SplitFloatNumberToArray(text);
    var SoMoi = "";
    var ThayDauPhay = false;

    if (arrNumbers != null && arrNumbers.length > 0) {
        for (var i = 0; i < arrNumbers.length; i++) {
            if (arrNumbers[i] == ',') {
                if (ThayDauPhay == false) {
                    SoMoi += arrNumbers[i];
                    ThayDauPhay = true;
                }
            }
            else {
                SoMoi += arrNumbers[i];
            }
        }
    }
    return SoMoi;
}

//Hàm lọc số
//Truyền vào chuỗi và trả về một mảng chứa số
function SplitNumberToArray(text) {
    var regstr = new RegExp("[0-9]", "g");
    var arrNumbers = text.match(regstr);
    return arrNumbers;
}

//Hàm lọc số
//Truyền vào chuỗi và trả về một mảng chứa số và cả dấu chấm (.)
function SplitFloatNumberToArray(text) {
    var regstr = new RegExp("[0-9\,]", "g");
    var arrNumbers = text.match(regstr);
    return arrNumbers;
}

//Hàm xóa tất cả ký tự là số 0 ở đầu
//Truyền vào chuỗi số và trả về chuỗi số không có số 0 ở đầu
function DeleteAllFirstZero(text) {
    if (text[0] == 0) {
        text = text.substring(1, text.length);
        return this.DeleteAllFirstZero(text);
    }
    return text;
}

//Hàm xóa ký tự là số 0 ở đầu (nếu chuỗi độ dài từ 2 ký tự trở lên)
//Truyền vào chuỗi số và trả về chuỗi số không có số 0 ở đầu hoặc nếu chuỗi số có 1 ký tự thì trả về số 0
function DeleteFirstZero(text) {
    if (text != undefined && text != null && text.length > 1 && text[0] == 0) {
        text = text.substring(1, text.length);
        return this.DeleteFirstZero(text);
    }
    return text;
}

//Hàm xóa ký tự là số 0 ở đầu (nếu chuỗi độ dài từ 2 ký tự trở lên)
//Truyền vào chuỗi số và trả về chuỗi số không có số 0 ở đầu hoặc nếu chuỗi số có 1 ký tự thì trả về số 0 hoặc số thập phân
function DeleteFirstZeroFloat(text) {
    if (text != undefined && text != null && text.length > 1 && text[0] == 0 && text[1] != ',') {
        text = text.substring(1, text.length);
        return this.DeleteFirstZero(text);
    }
    return text;
}

//Hàm thêm ký tự phân cách vào chuỗi số
function AddCharSplitGroupNumber(number) {
    var GroupNumber = number;
    if (number == undefined)
        return null;
    var arrNumbers = this.SplitNumberToArray(number);
    if (arrNumbers != null && arrNumbers.length > 3) {
        var strlength = arrNumbers.length;
        for (var i = strlength - 3; i > 0; i = i - 3) {
            GroupNumber = GroupNumber.substring(0, i) + "," + GroupNumber.substring(i);
        }
    }
    return GroupNumber;
}

//Hàm thêm ký tự phân cách vào chuỗi số thực
function AddCharSplitGroupFloatNumber(number) {
    var integer = "";
    var decimal = "";

    integer = number.split(',')[0];
    decimal = number.split(',')[1];

    integer = this.AddCharSplitGroupNumber(integer);
    //decimal = this.AddCharSplitGroupNumber(decimal);
    if (decimal != undefined) {
        return integer + "," + decimal;
    }
    else {
        return integer;
    }
}

//Hàm maxlength đối với Text
//Gán sự kiện: onkeypress="onkeypressMaxLength(this,500,'message');"
function onkeypressMaxLength(textbox, maxlength, Message) {
    if (textbox.value.length - 1 >= maxlength) {
        textbox.value = textbox.value.substring(0, maxlength - 1);
        document.getElementById(Message).innerHTML = "Bạn đã nhập quá dài !. Yêu cầu nhập nhỏ hơn " + maxlength + " ký tự";
        return false;
    }
    return true;
}

//Hàm maxlength đối với Text
//Gán sự kiện: onchange="onchangeMaxLength(this,500,'message');"
function onchangeMaxLength(textbox, maxlength, Message) {
    if (textbox.value.length - 1 > maxlength) {
        textbox.value = textbox.value.substring(0, maxlength);
        document.getElementById(Message).innerHTML = "Bạn đã nhập quá dài !. Yêu cầu nhập nhỏ hơn " + maxlength + " ký tự";
    }
}

//Hàm maxlength đối với số và chỉ nhập số
//Gán sự kiện: onchange="onchangeMaxlenAndOnlyNumber(this,500,'message');"
function onchangeMaxlenAndOnlyNumber(textbox, maxlength, Message) {
    if (textbox.value.length - 1 > maxlength) {
        textbox.value = textbox.value.substring(0, maxlength);
        textbox.value = this.FilterOnlyNumber(textbox.value);
        textbox.value = this.DeleteFirstZero(textbox.value);
        textbox.value = this.AddCharSplitGroupNumber(textbox.value);
        document.getElementById(Message).innerHTML = "Bạn đã nhập quá dài !. Yêu cầu nhập nhỏ hơn " + maxlength + " ký tự";
    }
}

/*End BACNP*/


//Hàm bắt sự kiện onchange của textbox
//Xóa tất cả ký tự không phải là số
//Gán sự kiện: onchange="onchangeChiNhapSo(this);"
function onchangeChiNhapSo(textbox) {
    textbox.value = this.FilterOnlyNumber(textbox.value);
    textbox.value = this.DeleteFirstZero(textbox.value);
}

//Hàm bắt sự kiện keyup của textbox
//Xóa tất cả ký tự không phải là số
//Gán sự kiện: onkeyup="keyupChiNhapSo(this);"
function keyupChiNhapSo(textbox) {
    textbox.value = this.FilterOnlyNumber(textbox.value);
    textbox.value = this.DeleteFirstZero(textbox.value);
}

/* T chyển số thành chữ */

function onchangeChuyenSoQuaChu(textbox, maxlength, output, Message) {
    onchangeMaxlenAndOnlyNumber(textbox, maxlength, Message);
    keyuponlynumber(textbox);
    $("#" + output).val(DocSoRaChu(textbox));
}

function onchangeChuyenSoQuaChuKhongPhaiInput(textbox, maxlength, output, Message) {
    onchangeMaxlenAndOnlyNumber(textbox, maxlength, Message);
    keyuponlynumber(textbox);
    $("#" + output).html(DocSoRaChu(textbox));
}
function TitleChuyenSoQuaChu(textbox, output) {
    if (!IsEmpty(textbox.value)) {
        var t = DocSoRaChu(textbox);
        $("#" + output).attr("title", t);
    } else {
        $("#" + output).removeAttr("title");
    }

}
function DocSoRaChu(textbox) {

    var arr = new Array("không", "một", "hai", "ba", "bốn", "năm", "sáu", "bảy", "tám", "chín");
    var hang = new Array("", "nghìn", "triệu", "tỷ", "nghìn tỷ", "triệu tỉ");
    var s = textbox.value;
    if (typeof s == "undefined") {
        s = textbox;
    }
    var mangso = s.replace(".", "");
        ReplaceAll(s, ".", "").toString();
    var str = ReplaceAll(s, ".", "").length - 1;
    var stroutput = "";
    var donvi, chuc, tram, j;
    j = 0;
    for (var i = str; i >= 0; i--) {

        if (i >= 0) {
            donvi = mangso[i];
        } else {
            donvi = -1;
        }
        i--;
        if (i >= 0) {
            chuc = mangso[i];
        } else {
            chuc = -1;
        }
        i--;
        if (i >= 0) {
            tram = mangso[i];
        } else {
            tram = -1;
        }
        if (donvi > 0 || chuc > 0 || tram > 0 || j == 3) {
            stroutput = hang[j] + " " + stroutput;
        }
        if (++j > 3) j = 1;

        // xử lý phần đơn vị
        if (donvi == 1 && chuc > 1) {
            stroutput = "mốt " + stroutput;
        } else if (donvi > 0) {
            stroutput = arr[donvi] + " " + stroutput;
        }

        //xử lý phần chục
        if (chuc < 0) break;
        if (chuc == 0 && donvi > 0) {
            stroutput = "lẻ " + stroutput;
        } else if (chuc == 1) {
            stroutput = "mười " + stroutput;

        } else if (chuc > 1) {
            stroutput = arr[chuc] + " " + "mươi " + stroutput;
        }

        // xử lý phần trăm
        if (tram < 0) break;
        if (tram > 0 || donvi > 0 || chuc > 0) {
            stroutput = arr[tram] + " " + "trăm" + " " + stroutput;
        }


    }
    return stroutput.charAt(0).toLocaleUpperCase() + stroutput.slice(1) + "đồng";

}
//replace tất cả mọi ký tự được chuyền vào
function ReplaceAll(Source, stringToFind, stringToReplace) {

    var temp = Source;

    var index = temp.indexOf(stringToFind);

    while (index != -1) {

        temp = temp.replace(stringToFind, stringToReplace);

        index = temp.indexOf(stringToFind);

    }

    return temp;

}

function DoOpenBox(IdBox) {
    var hightdocument = $(document).height();
    var widthdocument = $(document).width();
    var hightwindown = $(window).height();
    var widthwindown = $(window).width();
    $("#" + IdBox).css({ "top": +(hightwindown / 2.5) + "px", "left": +(widthwindown / 2) + "px", "display": "block" });
    $("#boxBlockDisplay").css({ "width": +(widthdocument) + "px", "height": +(hightdocument) + "px", "display": "block" });
}

function DoCloseBox(IdBox) {
    $("#" + IdBox).css("display", "none");
    $("#boxBlockDisplay").css("display", "none");
}

function DoCheckError_Json(textStatus) {
    if (textStatus.status === 401) {
        if (confirm("Thời hạn đăng nhập đã hết ! Bạn có muốn đăng nhập lại ?"))
            window.location.href = basePath + "Authentication/Login";

    } else {
        document.getElementById("Message").innerHTML = "Lỗi kết nối! Vui lòng liên hệ admin!";
    }
}
